﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModeloEntidades;


namespace AccesoDatos.DAO
{
    public class DAO_Tramite_Matriculacion : DAO_Base_modelo_entidades
    {
        // Atributos de manejo de instancia (singleton)
        static DAO_Tramite_Matriculacion instance = null;
        //----------------------------------------------------------------------------------------

        public List<Tramite_Matriculacion> obtener_enCurso(){

                                         // Todos los tramites que no fueron eliiminados
            var tramites_matriculacion = (from t in acceso_ModeloEntidades.Tramites_Matriculaciones
                                          where t.eliminado == false
                                          select t).ToList();

            return tramites_matriculacion;
                       

        }


        public List<Tramite_Matriculacion> obtener_enCurso(string razon_social, string nombres_titular, string nombre_localidad, string nombre_departamento)
        {

            // Todos los tramites que contengan parte de razon social y nombre titular
            var tramites_matriculacion = (from t in acceso_ModeloEntidades.Tramites_Matriculaciones
                                          where (t.eliminado == false) &&
                                                (t.Consultorio.razon_social.Contains(razon_social) || razon_social == "") &&
                                                (t.Consultorio.titular_actual.nombre.Contains(nombres_titular) || nombres_titular=="") &&
                                                (t.Consultorio.Local.Localidad.nombre == nombre_localidad | nombre_localidad.ToUpper() == "CUALQUIERA") &&
                                                (t.Consultorio.Local.Localidad.Departamento.nombre == nombre_departamento | nombre_departamento.ToUpper() == "CUALQUIERA")
                                          select t
                                          ).ToList();

            return tramites_matriculacion;


        }

        public void eliminar(Tramite_Matriculacion unTramite)
        {
            unTramite.eliminado = true;

            acceso_ModeloEntidades.SaveChanges();
        }

        public static DAO_Tramite_Matriculacion Instance
        {
            get
            {
                if (instance == null)
                {
                    lock (padlock)
                    {
                        if (instance == null)
                        {
                            instance = new DAO_Tramite_Matriculacion();
                        }
                    }
                }
                return instance;
            }
        }
    }
}
